package view;

import java.awt.Graphics;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JPanel;

import model.juego.Espacio;
import view.model.CargadorImagenes;
import view.model.TransformacionCoordenadas;

@SuppressWarnings("serial")
public class VistaJuego extends JPanel implements Observer{

	private Espacio espacio;
	private CargadorImagenes cargadorImagenes;
	private String skin = "Normal ";

	public VistaJuego(Espacio espacio){
		this.espacio = espacio;
		espacio.observarBolas(this);
		espacio.observarNave(this);
		this.setBounds(0, 0, Espacio.ancho, Espacio.alto);
		this.setVisible(true);
		this.setFocusable(true);
		cargadorImagenes = new CargadorImagenes();
	}

	public void update(Observable arg0, Object arg1) {
		espacio.observarBolas(this);
		repaint();
	}
	
	public void setSkin(String nombre){
		skin = nombre;
		cargadorImagenes = new CargadorImagenes();
	}

	@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawImage(cargadorImagenes.getImagen(skin + "fondo.gif"),0,0,this);
				
		for (Visible elemento: espacio.getElementos()){
			TransformacionCoordenadas coordenadas = new TransformacionCoordenadas(elemento.getX(),elemento.getY(),elemento.getAlto());
			g.drawImage(cargadorImagenes.getImagen(skin + elemento.getClass().getSimpleName() + elemento.getColor() +".gif"),(int)coordenadas.getX(),(int)coordenadas.getY(),(int)elemento.getAncho(), (int)elemento.getAlto(),this);
		}
	}

}
